#define  _CRT_SECURE_NO_WARNINGS 1
//#include"head.h"

//指针的基本运算有三种：
// 1.指针 + - 整数
// 2.指针 - 指针
// 3.指针的关系运算
//


//1、指针 + - 整数

//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = arr;
//	//printf("%d\n", *p);
//	//printf("%d\n", *(p + 1));
//	//printf("%d\n", *(p + 2));
//
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));
// 
// 		//printf("%d ", *p);
//		//p++;
//	}
//    printf("\n");
//
//	return 0;
//}

//倒序打印
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = arr;
//
//	for (int i = sz - 1; i >= 0; i--)
//	{
//		printf("%d ", *(p + i));
//
//	}
//	printf("\n");
//
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + sz - 1));
//        p--;
//	}
//    printf("\n");
//
//	return 0;
//}



//2、指针 - 指针
//注意：两个指针要指向同一块空间。

//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("%d\n",&arr[9]-&arr[0]);
//	//指针-指针得到的是两个指针之间的元素个数
//
//	//char ch[10] = { 'a','b','c','d','e' };
//    //printf("%d\n",&ch[4]-&arr[0]); //error
//
//
//	return 0;
//}


//实现strlen函数
//size_t my_strlen(char* p)
//{
//	int count = 0;
//	while (*p != '\0') //while(*p)  '\0'的ascii码为0
//	{
//        count++;
//        p++;
//	}
//    return count;
//}

//size_t my_strlen(char* p)
//{
//	char* start = p;
//	while (*p) //'\0'的ascii码为0
//	{
//		p++;
//	}
//	return p - start; //指针 - 指针
//}
//
//
//int main()
//{
//	char ch[10] = "abcdef";
//	//a b c d e f \0
//	//strlen 计算的是字符串的长度
//	//统计的是字符串中\0之前的字符个数
//	//数组名就是地址，数组名是数组首元素的地址
//	//arr == &arr[0]
//	//size_t len = strlen(ch);
//    size_t len = my_strlen(ch); //size_t是无符号整形
//	printf("%d\n",len);
//
//	return 0;
//}



//3、指针关系运算：两个指针比较大小

//int main()
//{
//    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//    //随着下标增长，地址大小也增长
//    int* p = arr;
//
//    int sz = sizeof(arr) / sizeof(arr[0]);
//    while (p < &arr[sz])//并没有访问元素，不算越界
//    //while(p < arr + sz)
//    {
//        printf("%d ", *p);
//        p++;
//    }
//    printf("\n");
//
//
//    return 0;
//}
//
